const swaggerUi = require('swagger-ui-express')
const swaggerJSDoc = require('swagger-jsdoc')
const path = require('path')

module.exports = function (app, port) {
  // 配置 swagger-jsdoc
  const options = {
    definition: {
    // swagger 采用的 openapi 版本 不用改
      openapi: '3.0.0',
      // swagger 页面基本信息 自由发挥
      info: {
        title: '接口文档swagger-ui-express',
        version: '1.0.0'
      },
      securityDefinitions: {
        Bearer: {
          type: 'apiKey',
          in: 'header',
          name: 'Authorization'
        }
      },
      security: [{ jwt: [] }]
    },
    // 重点，指定 swagger-jsdoc 去哪个路由下收集 swagger 注释
    apis: [path.join(__dirname, '../router/**/*.js'), path.join(__dirname, '../router/**/parameters.yml')]
  }

  const swaggerSpec = swaggerJSDoc(options)

  // 开放 swagger 相关接口，
  app.get('/swagger2.json', function (req, res) {
    res.setHeader('Content-Type', 'application/json')
    res.send(swaggerSpec)
  })

  // 使用 swaggerSpec 生成 swagger 文档页面，并开放在指定路由
  app.use('/swagger2', swaggerUi.serve, swaggerUi.setup(swaggerSpec))
}
